public class ReadMe {
    /**
     * 2022-11-29 前端赋值后台代码
     * 1.创建项目
     * 2.添加web支持
     * 3.赋值第一阶段的项目
     * 4.添加tomcat
     * -------------------------
     * 需要前端访问后台
     * 页面加载完成，调用后台接口，得到数据，并展示在页面
     * 每一个对象，一个service 一个dao
     * ---------------------------------
     * Java后台思路：
     *      1）servlet  六大步骤
     *      2）service  逻辑处理：将vo-->entity;entity-->dto
     *      3）dao  调用mybatis
     *          1)引入mybatis的包
     *          2)引入工具类，得到SQL session
     *          3）引入mybatis-config.xml
     *          4）引入jdbc.properties
     *          5）引入jdbc的驱动包
     *          6)在dao调用mapper.xml里面的sql语句
     *          7)在mapper.xml里面写sql语句
     *          注意：如果后台传递的是多条数据，则用list集合进行接收
     */
    /**
     * 2022-11-30 前端页面赋值
     * 思路：在页面加载完成时，应该调用后台数据接口，将查询出来的数据显示在页面上
     * 后台：
     *      1）servlet   将所有的调用写在servlet  一个对象对应一个service
     *      2）service
     *      3）dao
     *      4）mapper.xml
     * 前端：
     *      1）调用ajax去后台取值 let res = myAjax("/home", {}, "get");
     * 注意：
     * 一：对于直接访问home接口，那么whereShow就直接固定为1了，同时
     *     private Integer pageNews; 1
     *     private Integer limitNews; 3
     *     private Integer pageProduct; 1
     *     private Integer limitProduct; 2
     *     这几个都已经固定了
     * 二：对于普通的类，不允许出现魔法值（常量）
     * 三：页面得到数据最好根据自己的页面去写js，面向对象，各做各的
     * ------------------------------------------------------
     * 点击产品进行页面跳转：
     *      1）页面跳转：window.open('/html/company.html')
     *      2）页面跳转之前应传递一个id，到另一个页面
     *      3）详细页面加载完成，应该根据id查询数据，并显示在页面上
     *      4）这里查询的时候，应该查询三条数据  ,而这三条数据是不连续的
     *    -----------------------
     *    正常情况下，是三条数据，还有集中特殊情况
     *    1）如果id拿到的是第一个id，则只有下一个
     *    2）如果id拿到的是最后一个，则只有上一个
     *    3）如果数据库里面只有一条数据，则没有上一个和下一个
     */
    /**
     * 2022-12-1 菜系的点击赋值取值
     * 1.在详细页面，根据id查询到当前的三条数据，并赋值
     * 2.菜系应该根据当前的菜系得到是哪个菜系，并显示背景颜色
     * 3.思路，到底应该怎么做？
     * ----------------------
     * 4.点击详细页面的菜系，应该跳转到产品展示页面
     * 5.产品展示页面应该根据菜系id查询所有产品，如果没有找到菜系id，则查询所有
     * 6.在菜系显示的时候可以根据菜系id直接查询
     * 难点：
     *  1.设置菜系的背景颜色，
     *  2.点击菜系查询产品
     */
    /**
     * 2022-12-2 前端产品页面逻辑梳理
     * 首页的赋值
     *      1.创建页面（第一阶段已经写好）
     *      2.创建js
     *          1）头部和中间的内容分开写，为什么分开写？
     *          2）在home.js里面写产品或者新闻数据的赋值
     *          3）因为产品和新闻是可以进行点击，所以，点击产品或者新闻应该跳转到新页面
     *          4）在跳转之前，应该将当前的id传递给新页面
     *          5）在新页面加载完成时，根据当前的id查询数据，并赋值给详细页面
     *      3.赋值：
     *          如果是对象赋值：data
     *          1.$("#id").html(data.phone)
     *          2.$("#id").attr("src",data.logo)
     *          如果是集合赋值：data
     *          1.应该做for循环 for(let i=0;i< data.length;i++)
     *          2.应该做字符串拼接  str+='';
     *          3.对div进行赋值：$("#id").html(str)
     *--------------------------------------------------------------
     * 跳转到详细页面：
     *      1.在div里面加一个onclick事件，点击时，传递id到另一个页面
     *      function goToProductDetail(id) {
     *          sessionStorage.setItem("productId", id);
     *          window.open("/html/product-detail.html");
     *      }
     *      2.在详细页面，加载完成时，根据id查询数据库并赋值
     *          1)因为根据id查询有上一个下一个，所以正常情况下应该是不定条数数据
     *          2）根据查询数据的条数进行简单的逻辑赋值（上一个，下一个，当前数据）
     *          3）因为每一条数据在当前页面都对应不同的菜系
     *          4）菜系也应该从数据库里面取，
     *          5）思考？谁先做？（先根据id查询还是先查询菜系？）先加载菜系
     *          6）赋值完后，应该显示当前是哪个菜系，所以需要设定菜系的背景颜色和字体颜色
     *              1）应该清空以前的样式
     *               $("#cuisine >div").each(function (index, obj) {
     *                  $(this).css({"color": "black", "background-color": "rgb(243, 243, 243)"})
     *               });
     *              2）在对当前菜系进行赋值
     *               $("#cuisine" + data.cuisineId).css({"color": "white", "background-color": "rgb(230, 144, 57)"});
     *              3）做赋值之前，在加载菜系的时候，给每一个div增加一个id
     * 点击详细页面菜系，应该跳转到产品页面
     * 1.得到菜系的id，并将id传递到产品页面
     *  function gotoProductPage(id) {
     *     sessionStorage.setItem("cuisineId", id);
     *     window.open("/html/product.html");
     * }
     * 2.在加载产品页面的时候，应该根据当前的菜系id去查询数据
     * 3.在根据菜系id查询数据之前，应该先将菜系加载出来
     * 4.加载完菜系的时候，在对菜系的背景和字体进行设置
     * 5.点击当前页面的菜系，可以随时查询菜系对应的产品
     * -------------------------------------------------
     * 分页查询：
     *  1.复制X-admin
     *  2.在页面顶部复制样式和js的引用
     *  3.在页面分页的地方写div  <div id="page"></div>
     *  4.在js里面 写
     *      function page(count) {
     *         //总页数低于页码总数
     *         laypage.render({
     *             elem: 'page'
     *             , count: count //数据总数
     *             , jump: function (obj) {
     *                 findProductByCuidineId(cuisineId, obj.curr, 8);
     *             }
     *         });
     *     }
     * 5.根据菜系id得当当前菜系的总条数
     *      let count = myAjax("/getCountForProductPage", {cuisineId: cuisineId}, "get");
     *
     *
     */
    /**
     * 2022-12-5 redis基础
     * 学新技术，应该从哪些方面入手？redis
     * 1.是什么？定义？  （内存）数据库
     * 2.优势？为什么要用redis？
     * 3.应用场景？描述多种项目里面的应用场景？
     * 4.怎么做？Java代码怎么写？
     * -----------------------------
     * 第五阶段之前我们学的计算机语言有哪些？
     * Java
     * js
     * mysql
     * redis
     * --------------------
     * 1.下载安装redis
     * 2.引入redis的jar包
     * 3.应用与项目：代码写在哪个地方？
     * 需求：页面出现一个秒杀事件，
     *      1）很多人同时访问网站首页？
     *      2）首页的数据全部来源于数据库，
     *      3）加入redis后，应该不让用户直接从数据库方法，而是访问redis
     *      4）第一次访问数据库，然后将数据存入redis，
     *      5）第二次访问的时候，就直接从redis里面得到数据
     *      --------------
     *      这里是一个逻辑关系，所以，建议大家将逻辑关系写入service
     *     就是说所有页面的数据都应该从redis里面取得
     *----------------------------------------------------
     * 1.redis里面String 如果第二次还是和以前的key值一样,则覆盖以前的值
     * 2.redis里面list,如果第二次和以前的一样,则会追加到list的后面
     * redis里面的数据,怎么才能消失?
     *      1)自动删除  设置过期时间
     *      2)手动删除  在每次管理员修改数据后,删除对应的key值即可
     *          1:如果是string,则删一个key即可,因为其他的会覆盖原有的值
     *          2:如果是list,则删除所有的key,因为不删除,则会在原有的基础上进行追加
     *           if (count > 0) {
     *             Jedis jedis = new Jedis();
     *             jedis.del("navTitles", "navHrefs");
     *         }
     * 3.选择数据库  jedis.select(10);
     *
     */
}
